home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Database How-To / Visual Basic 4 Database - How-to (The Waite Group)(1995).iso / trans.fr_ / trans.fr
Text File  |  1995-04-25  |  6KB  |  201 lines

  1. VERSION 4.00
  2. Begin VB.Form frmODBC 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "Transfer Bank Funds"
  5.    ClientHeight    =   2490
  6.    ClientLeft      =   2010
  7.    ClientTop       =   2325
  8.    ClientWidth     =   4890
  9.    Height          =   2895
  10.    Left            =   1950
  11.    LinkTopic       =   "Form1"
  12.    ScaleHeight     =   2490
  13.    ScaleWidth      =   4890
  14.    Top             =   1980
  15.    Width           =   5010
  16.    Begin VB.TextBox txtAmount 
  17.       Height          =   285
  18.       Left            =   1680
  19.       TabIndex        =   5
  20.       Top             =   2040
  21.       Width           =   1455
  22.    End
  23.    Begin VB.CommandButton cmdQuit 
  24.       Cancel          =   -1  'True
  25.       Caption         =   "Quit"
  26.       Height          =   495
  27.       Left            =   3480
  28.       TabIndex        =   7
  29.       Top             =   1080
  30.       Width           =   1215
  31.    End
  32.    Begin VB.CommandButton cmdTransfer 
  33.       Caption         =   "Transfer"
  34.       Height          =   495
  35.       Left            =   3480
  36.       TabIndex        =   6
  37.       Top             =   360
  38.       Width           =   1215
  39.    End
  40.    Begin VB.ComboBox cmbAccounts 
  41.       Height          =   300
  42.       Index           =   1
  43.       Left            =   240
  44.       TabIndex        =   3
  45.       Top             =   1320
  46.       Width           =   2895
  47.    End
  48.    Begin VB.ComboBox cmbAccounts 
  49.       Height          =   300
  50.       Index           =   0
  51.       Left            =   240
  52.       TabIndex        =   1
  53.       Top             =   480
  54.       Width           =   2895
  55.    End
  56.    Begin VB.Label Label2 
  57.       AutoSize        =   -1  'True
  58.       BackColor       =   &H00C0C0C0&
  59.       Caption         =   "Amount to Transfer:"
  60.       Height          =   195
  61.       Left            =   240
  62.       TabIndex        =   4
  63.       Top             =   2040
  64.       Width           =   1395
  65.    End
  66.    Begin VB.Label Label1 
  67.       BackColor       =   &H00C0C0C0&
  68.       Caption         =   "Transfer To:"
  69.       Height          =   255
  70.       Index           =   1
  71.       Left            =   240
  72.       TabIndex        =   2
  73.       Top             =   1080
  74.       Width           =   1215
  75.    End
  76.    Begin VB.Label Label1 
  77.       BackColor       =   &H00C0C0C0&
  78.       Caption         =   "Transfer From:"
  79.       Height          =   255
  80.       Index           =   0
  81.       Left            =   240
  82.       TabIndex        =   0
  83.       Top             =   240
  84.       Width           =   1215
  85.    End
  86. End
  87. Attribute VB_Name = "frmODBC"
  88. Attribute VB_Creatable = False
  89. Attribute VB_Exposed = False
  90. Option Explicit
  91.  
  92. Private Sub cmdQuit_Click()
  93.     End
  94. End Sub
  95.  
  96. Private Sub cmdTransfer_Click()
  97.     If cmbAccounts(0).text = "" Or cmbAccounts(1).text = "" Then
  98.         MsgBox "You must select both From and To accounts."
  99.         Exit Sub
  100.     End If
  101.     If cmbAccounts(0).text = cmbAccounts(1).text Then
  102.         MsgBox "Please select two different accounts."
  103.         Exit Sub
  104.     End If
  105.     If Val(txtAmount.text) <= 0 Then
  106.         MsgBox "You must specify a positive amount."
  107.         Exit Sub
  108.     End If
  109.     
  110.     'Transfer funds. Note that leaving txtAmount as a
  111.     'string eliminates need to reconvert to text in
  112.     'Transfer procedure.
  113.     Transfer cmbAccounts(0).text, cmbAccounts(0).text, txtAmount.text
  114. End Sub
  115.  
  116. 'need to create Bank Accounts data source, and
  117. 'create a test.mdb with Accounts table - use
  118. 'VB data manager
  119.  
  120. Private Sub Form_Load()
  121.     Dim BankWS As Workspace
  122.     Dim BankDB As Database
  123.     Dim BankRecords As Recordset
  124.     
  125.     'Center the form
  126.     Centerform
  127.     
  128.     Set BankWS = DBEngine.Workspaces(0)
  129.     Set BankDB = BankWS.OpenDatabase("Accounts.xls", 0, 0, "ODBC;DSN=Excel Corporate data")
  130. GoTo temp
  131.     'Get the account names
  132.     Set BankRecords = BankDB.OpenRecordset("SELECT AccountID from Accounts")
  133.     
  134.     'Populate the list boxes
  135.     BankRecords.MoveFirst
  136.     Do While Not BankRecords.EOF
  137.         cmbAccounts(0).AddItem BankRecords("AccountID")
  138.         cmbAccounts(1).AddItem BankRecords("AccountID")
  139.         BankRecords.MoveNext
  140.     Loop
  141. temp:
  142.     'And now let's add one bogus account that doesn't exist, so that
  143.     'we can test the transaction should it fail to find an account
  144.     cmbAccounts(0).AddItem "D.B Cooper Savings"
  145.     cmbAccounts(1).AddItem "D.B Cooper Savings"
  146.     
  147.     'Set the combo lists to the first item
  148.     cmbAccounts(0).ListIndex = 0
  149.     cmbAccounts(1).ListIndex = 0
  150. End Sub
  151.  
  152.  
  153. Private Sub Transfer(xferFrom As String, xferTo As String, xferAmt As String)
  154.     Dim BankWS As Workspace
  155.     Dim BankDB As Database
  156.     Dim BankQuery As QueryDef
  157.  
  158.     On Error GoTo TransferFailed
  159.     
  160.     Set BankWS = DBEngine.Workspaces(0)
  161.     Set BankDB = BankWS.Databases(0)
  162.     
  163.     'Start transaction
  164.     BankWS.BeginTrans
  165.     
  166.     ' Create temporary pass-through query.
  167.     Set BankQuery = BankDB.CreateQueryDef("")
  168.     
  169.     'Connect to the data source
  170.     BankQuery.Connect = "ODBC;DSN=Bank Accounts"
  171.     
  172.     'Record the transaction in log
  173.     BankQuery.SQL = "INSERT INTO LogBook (Type, Source, Destination,Amount) VALUES ('Transfer', xferFrom, xferTo, xferAmount)"
  174.     BankQuery.Execute
  175.     
  176.     'Add funds to xferTo
  177.     BankQuery.SQL = "UPDATE Accounts SET Balance = Balance + " & xferAmt & " WHERE AccountID = " & xferTo
  178.     BankQuery.Execute
  179.     
  180.     'Check to make sure that there are funds available
  181.     
  182.     'Deduct funds from xferFrom
  183.     BankQuery.SQL = "UPDATE Accounts SET Balance = Balance - " & xferAmt & " WHERE AccountID = " & xferFrom
  184.     BankQuery.Execute
  185.     
  186.     'Got this far, so commit the transaction
  187.     BankWS.CommitTrans
  188.     
  189.     Exit Sub
  190.  
  191. TransferFailed:
  192.     MsgBox "Error condition. Transaction rolled back."
  193.     BankWS.Rollback       ' If one operation fails, roll them all back.
  194.     Exit Sub
  195. End Sub
  196.  
  197. Sub Centerform()
  198.     frmODBC.Move (Screen.Width - frmODBC.Width) / 2, (Screen.Height - frmODBC.Height) / 2
  199. End Sub
  200.  
  201.